'use strict';

angular.module('subscriberBackbutton', [])
        .run(['$location', '$rootScope', 'serviceGame', 'servicePopupFunc',
            function ($location, $rootScope, serviceGame, servicePopupFunc) {
                //$location.path('/');

                var popupShow = null;

                // back button
                document.addEventListener("backbutton", function (e) {

                    e.preventDefault();

                    if (serviceGame.winnerValue) {

                        /**
                         * jest juz koniec gry
                         * przekierowanie na game/quit
                         */
                        console.log('back button >> game is ended');

                        if ($('#popupEndGameDialog').css('display') === 'block') {
                            $('#popupEndGameDialog').modal('hide');
                        }

                        $location.path('/game/quit');
                        $rootScope.$apply();
                        return;
                    }


                    if (popupShow !== null) {

                        /**
                         * potwierdzenie wyjscia,
                         * symulacja eventu clik na popupie
                         */

                        if (popupShow.css('display') === 'block') {
                            console.log('back button >> game in progress 2');

                            $location.path('/game/quit');
                            $rootScope.$apply();
                            popupShow.modal('hide');

                            popupShow = null;
                            return;
                        } else {
                            popupShow = null;
                        }
                    }

                    if (serviceGame.nextMoveValue !== null) {

                        /**
                         * prosba o potwierdzenie wyjscia
                         * otwarcie popupu
                         */

                        console.log('back button >> game in progress');

                        if (serviceGame.singleOrMulti == 'multi') {
                            popupShow = servicePopupFunc.showPopupMultiBack();
                        } else {
                            popupShow = servicePopupFunc.showPopupSingleBack();
                        }
                        return;
                    }


                    /**
                     * uzytkownik nie jest w grze
                     * wiec nic sie nie dzieje
                     */

                    console.log('back button >> normal');
                    popupShow = null;

                    if ($location.path() === '/main') {
                        console.log('exit application');
                        navigator.app.exitApp();
                    } else {

                        /**
                         * zamykanie wszystkich innych popupow
                         * ktore moga byc otwarte
                         */
                        if ($('#popupResetStatConfirm').css('display') === 'block') {
                            $('#popupResetStatConfirm').modal('hide');
                        } else if ($('#popupEndGameDialog').css('display') === 'block') {
                            $('#popupEndGameDialog').modal('hide');
                        } else {
                            window.history.back();
                        }
                    }

                }, true);
                
                console.log('subscriberBackbutton::run');
            }
        ]);

